package com.qm.chp01type;

/**
 * @author wb
 * @date 2023-06-10 9:41
 * @description: 数据类型
 * Java 中的数据类型可分为 2 种:
 * 1）基本数据类型。
 * 基本数据类型是 Java 语言操作数据的基础，包括 boolean、char、byte、short、int、long、float 和 double，共 8 种。
 * 2）引用数据类型。
 * 除了基本数据类型以外的类型，都是所谓的引用类型。常见的有数组（对，没错，数组是引用类型，后面我们会讲）、class（也就是类），以及接口（指向的是实现接口的类的对象）。
 */
public class MyType1 {
//    1）bit（比特）
//    比特作为信息技术的最基本存储单位，非常小，我们知道计算机是可以用来存储数据的，但是无论是内存还是硬盘，计算机存储设备的最小信息单元叫“位（bit）”，我们又称之为“比特位”，通常用小写的字母”b”表示。而计算机中最基本的存储单元叫“字节（byte）”，
//    大家都知道，计算机是以二进制存储数据的，二进制的一位，就是 1 比特，也就是说，比特要么为 0 要么为 1。

//    2）Byte（字节）
//    通常来说，一个英文字符是一个字节，一个中文字符是两个字节。字节与比特的换算关系是:1 字节 = 8 比特。
//    在往上的单位就是 KB，并不是 1000 字节，因为计算机只认识二进制，因此是 2 的 10 次方，也就是 1024 个字节。
//    byte -> short -> int -> long -> float -> double
//    char -> int -> long -> float -> double
    public static void main(String[] args) {
//        字符串常量 用双引号括起来的多个字符（可以包含0个、一个或多个），例如 "a"、"abc"、"中国" 等
//        整数常量 整数，例如:-10、0、88 等
//        小数常量 小数，例如:-5.5、1.0、88.88 等
//        字符常量 用单引号括起来的一个字符，例如:'a'、'5'、'B'、'中' 等
//        布尔常量 布尔值，表示真假，只有两个值true和false
//        空常量 一个特殊的值，空值，值为null
        System.out.println(10);
        System.out.println(10000);
        System.out.println('A');
        System.out.println(true);
        System.out.println(12.3);

        // byte  
        System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);  
        System.out.println("包装类:java.lang.Byte");  
        System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);  
        System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);  
        System.out.println();  
  
        // short  
        System.out.println("基本类型:short 二进制位数:" + Short.SIZE);  
        System.out.println("包装类:java.lang.Short");  
        System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);  
        System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);  
        System.out.println();  
  
        // int  
        System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);  
        System.out.println("包装类:java.lang.Integer");  
        System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);  
        System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);  
        System.out.println();  
  
        // long  
        System.out.println("基本类型:long 二进制位数:" + Long.SIZE);  
        System.out.println("包装类:java.lang.Long");  
        System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);  
        System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);  
        System.out.println();  
  
        // float  
        System.out.println("基本类型:float 二进制位数:" + Float.SIZE);  
        System.out.println("包装类:java.lang.Float");  
        System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);  
        System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);  
        System.out.println();  
  
        // double  
        System.out.println("基本类型:double 二进制位数:" + Double.SIZE);  
        System.out.println("包装类:java.lang.Double");  
        System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);  
        System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);  
        System.out.println();  
  
        // char  
        System.out.println("基本类型:char 二进制位数:" + Character.SIZE);  
        System.out.println("包装类:java.lang.Character");  
        // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台  
        System.out.println("最小值:Character.MIN_VALUE="  
                + (int) Character.MIN_VALUE);  
        // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台  
        System.out.println("最大值:Character.MAX_VALUE="  
                + (int) Character.MAX_VALUE);  
        
//        java变量命名规则为:
//        1、Java变量命名只能使用字母、数字、下划线、美元符号($)组成。
//        2、变量名以字母、下划线或者美元符号开头，其中以美元符号开头命名的变量虽然能够编译通过但是不建议使用。
//        3、变量的名字可大小写混用，但首字符应小写。
//        4、Java变量名不限制长度，在命名的时候，尽量使用完整的单词进行命名，不要使用缩写。
//        5、变量名不可以和java关键字冲突，但是可以包含关键字。
//            变量注意事项

//        1. 在同一对花括号中，变量名不能重复。
//        2. 变量在使用之前，必须初始化（赋值）。
//        3. 定义long类型的变量时，需要在整数的后面加L（大小写均可，建议大写）。因为整数默认是int类型，整数太大可能超出int范围。
//        4. 定义float类型的变量时，需要在小数的后面加F（大小写均可，建议大写）。因为浮点数的默认类型是double， double的取值范围是大于float的，类型不兼容。
    }

}
